package br.com.senac.pi5.dao;

import br.com.senac.pi5.bean.Passagem;
import br.com.senac.pi5.connection.ConexaoDB;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;

public class PassagemDao {

    static PreparedStatement ps;
    // a conexão com o banco de dados
    private final Connection conexao;

    public PassagemDao() throws SQLException {
        this.conexao = new ConexaoDB().getConexao();
    }

    public void criarPassagem(Passagem passagem) throws SQLException {

        String sql = "INSERT INTO PASSAGEM (PASSAGEIRO_ID, VOO_ID, ASSENTO, PRECO, NECESSIDADE_ESPECIAL, "
                + "OBSERVACAO, PEDIDO_COMPRA, DEPENDENTE_CODIGO) VALUES(?,?,?,?,?,?,?,?)";

        try (PreparedStatement stmt = conexao.prepareStatement(sql)) {
            stmt.setString(1, passagem.getPassageiro().getCodigo());
            stmt.setString(2, passagem.getVoo().getCodigo());
            stmt.setString(3, passagem.getAssento());
            stmt.setString(4, null);
            stmt.setString(5, null);
            stmt.setString(6, null);
            //stmt.setString(3, passagem.getAssento())
            stmt.setDouble(4, passagem.getPreco());
        //stmt.setString(5, passagem.getNecessidadeEspecial()); 
            //stmt.setString(6, passagem.getObservacao()); */
            stmt.setString(7, passagem.getPedidoCompra().getCodigo().toString());
            stmt.setString(8, passagem.getDependente().getCodigo());

            //Executa o código SQL
            stmt.execute();
            stmt.close();
        }

    }

    public List<Passagem> listaPassagens(String pedidoCompra) throws SQLException, ParseException {
        String sql = "SELECT CODIGO, PASSAGEIRO_ID, VOO_ID, ASSENTO, PRECO, NECESSIDADE_ESPECIAL, OBSERVACAO, PEDIDO_COMPRA, DEPENDENTE_CODIGO FROM PASSAGEM WHERE PEDIDO_COMPRA ='" + pedidoCompra + "'";

        PreparedStatement preparedStatement = conexao.prepareStatement(sql);
        ResultSet rs = preparedStatement.executeQuery(sql);

        List<Passagem> listaPassagens = new ArrayList<>();

        while (rs.next()) {
            PassageiroDao passageiroDao = new PassageiroDao();
            VooDao vooDao = new VooDao();
            DependenteDao dependenteDao = new DependenteDao();
            PedidoCompraDao pedidoCompraDao = new PedidoCompraDao();

            Passagem passagem = new Passagem();
            passagem.setCodigo(Integer.parseInt(rs.getString("CODIGO")));
            passagem.setPassageiro(passageiroDao.buscaPassageito(rs.getString("PASSAGEIRO_ID")));
            passagem.setVoo(vooDao.buscaVoo(rs.getString("VOO_ID")));
            passagem.setAssento(rs.getString("ASSENTO"));
            passagem.setNecessidadeEspecial(rs.getString("NECESSIDADE_ESPECIAL"));
            passagem.setObservacao(rs.getString("OBSERVACAO"));
            passagem.setPedidoCompra(pedidoCompraDao.buscaPedido(rs.getString("PEDIDO_COMPRA")));
            passagem.setDependente(dependenteDao.buscaDependente(rs.getString("DEPENDENTE_CODIGO")));

            listaPassagens.add(passagem);
        }

        return listaPassagens;
    }

}
